/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package treegen;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;

/**
 *
 * @author Дарья
 */
public class CrownPanel {
    public VBox mainPane = new VBox();
    private ComboBox comboShape = new ComboBox();
    private HBox shape = new HBox();
    private ComboBox comboDensity = new ComboBox();
    private HBox density = new HBox();
    private ImageView image;
    private Text text;
    private HBox reset = new HBox();
    private Button buttonReset = getButton("Сбросить");
    private HBox elongated = new HBox();
    private HBox pyramidal = new HBox();
    private HBox high = new HBox();
    private HBox average = new HBox(); 
    private HBox easy = new HBox();
    private HBox imageBox = new HBox();
    
    public CrownPanel() {
        
        //вытянутая форма
        text = new Text("Вытянутая");
        text.setFont(Font.font("Verdana", 12));
        elongated.getChildren().addAll(text);
        
        //пирамидальная форма
        text = new Text("Пирамидальная");
        text.setFont(Font.font("Verdana", 12));
        pyramidal.getChildren().addAll(text);
        
        //Комбобокс для формы кроны
        comboShape.getItems().addAll(elongated, pyramidal);
        comboShape.getSelectionModel().selectedItemProperty().addListener(
            new ChangeListener() {
            @Override
                public void changed(ObservableValue ov, Object t, Object t1) {
                    build();
                }
            });
        
        //Виджет для формы кроны
        image = new ImageView(new Image(BranchLevel.class.getResourceAsStream("pictures/emptiness.png")));
        imageBox.getChildren().addAll(image);
        imageBox.setPadding(new Insets(0, 0, 10, 0));
        
        text = new Text("Форма кроны: ");
        text.setFont(Font.font("Verdana", FontPosture.ITALIC, 14));
        shape.getChildren().addAll(text, comboShape);
        shape.setPadding(new Insets(0, 0, 10, 0));
        
        
        //высокая плотность
        text = new Text("Плотная (просветы составляют не более 25%)");
        text.setFont(Font.font("Verdana", 12));
        high.getChildren().addAll(text);
        
        //средняя плотность
        text = new Text("Средняя (просветы составляют от 25 до 50%)");
        text.setFont(Font.font("Verdana", 12));
        average.getChildren().addAll(text);
        
        //низкая плотность
        text = new Text("Легкая (просветы составляют 50% и более)");
        text.setFont(Font.font("Verdana", 12));
        easy.getChildren().addAll(text);
        
        //Комбобокс для плотности кроны
        comboDensity.getItems().addAll(high, average, easy);
        
        //Виджет для плотности кроны
        text = new Text("Плотность кроны: ");
        text.setFont(Font.font("Verdana", FontPosture.ITALIC, 14));
        density.getChildren().addAll(text, comboDensity);
        density.setPadding(new Insets(0, 0, 10, 0));
        
        //Кнопка "Сбросить"
        text = new Text ("Сбросить");
        text.setFont(Font.font("Verdana", FontWeight.BOLD, 14));
        buttonReset.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent mouseEvent) {
                clean();
            }
        });

        reset.getChildren().add(buttonReset);
        reset.setPadding(new Insets(0, 0, 0, 10));
        
        mainPane.getChildren().addAll(shape, imageBox, density, reset);
        mainPane.setPadding(new Insets(5, 0, 5, 10));
    }
    /** 
     * Получить кнопку в нужном стиле
     * @param text текст кнопки
     * @return кнопка
     */
    private Button getButton (String text) {
        Button button = new Button(text);
        button.setStyle("-fx-background-color:grey;");
        button.setTextFill(Color.WHITE);
        button.setFont(Font.font("Verdana", FontWeight.BOLD, 12));
        return button;
    }
    
    public void clean(){
        comboShape.setValue(elongated);
        comboDensity.setValue(high);
    }
    
    public void build() {
        imageBox.getChildren().clear();
        String str = ((Text)((HBox)comboShape.getValue()).getChildren().get(0)).getText();
        if(str.equals("Вытянутая")) {
            image = new ImageView(new Image(BranchLevel.class.getResourceAsStream("pictures/elongated.jpg")));
            imageBox.getChildren().addAll(image); 
        } else if (str.equals("Пирамидальная")) {
            image = new ImageView(new Image(BranchLevel.class.getResourceAsStream("pictures/pyramidal.jpg")));
            imageBox.getChildren().addAll(image); 
        }
    }
}
